package interfaces;




public interface PipelineI<INOUT> {

	/**
	 * Defines the count of workers
	 * 
	 * @param n
	 *            - count of Workers
	 */
	public abstract void setWorkers(int n);

	/**
	 * Assigns task t to stage/worker with this workerid
	 * 
	 * @param workerid
	 *            - int
	 * @param t
	 *            - TaskI
	 */
	public abstract void setTask(int workerid, TaskI t);

	/**
	 * Drawing connections between stages in order
	 */
	public abstract void setConnections();

	/**
	 * Gets all stages to work
	 */
	public abstract void excute();

	/**
	 * Stops all stages
	 */
	public void allStop();

	public abstract void appendTask(TaskI task);

}